--------------------------------------------------
-- @file src/kit/core/path.lua
-- @desc tools for handling file paths
-- @author doooreyn
-- @date 2020.11.14
-- @depends lfs
-- @more 文件路径处理工具
--------------------------------------------------
local cc = cc
local package = package

--
-- @method cfile
-- @desc 获取文件工具单例
-- @return cc.FileUtils
--
local function cfile()
    return cc.FileUtils:getInstance()
end

--
-- @desc 文件路径处理工具
--
local path = {}

--
-- @method path.join
-- @desc 路径拼接
-- @return string
--
function path:join(p1, p2)
    p1 = p1:normalize()
    p2 = p2:normalize()
    return p1 .. (p1:end_with('/') and '' or '/') .. p2
end

--
-- @method path.lua_search_path
-- @desc 脚本搜索路径
-- @return string
--
function path:lua_search_path()
    return package.path
end

--
-- @method path.log_path
-- @desc 日志存放路径
-- @return string
--
function path:log_path()
    return path.join(path.get_writable_path(), 'log')
end

--
-- @method path.file_search_path
-- @desc 脚本搜索路径
-- @return string
--
function path:file_search_paths()
    return cfile():getSearchPaths()
end

--
-- @method path.add_file_search_path
-- @desc 脚本搜索路径
-- @return string
--
function path:add_file_search_path(path)
end

--
-- @method path.set_file_search_paths
-- @desc 脚本搜索路径
-- @return string
--
function path:set_file_search_paths(...)
end

--
-- @method path.get_writable_path
-- @desc 脚本搜索路径
-- @return string
--
function path:get_writable_path(...)
    return cc.FileUtils:getInstance():getWritablePath()
end

--
-- @method path.set_writable_path
-- @desc 脚本搜索路径
-- @return string
--
function path:set_writable_path(...)
end

--
-- @method path.full_path_of
-- @desc 脚本搜索路径
-- @return string
--
function path:full_path_of(...)
end

--
-- @method path.walk_directory
-- @desc 脚本搜索路径
-- @return string
--
function path:walk_directory(path)
end

--
-- @method path.walk_directory_async
-- @desc 脚本搜索路径
-- @return string
--
function path:walk_directory_async(path)
end

--
-- @method path.walk_directory_recrusively
-- @desc 脚本搜索路径
-- @return string
--
function path:walk_directory_recrusively(path)
end

--
-- @method path.walk_directory_recrusively_async
-- @desc 脚本搜索路径
-- @return string
--
function path:walk_directory_recrusively_async(path)
end

--
-- @method path.create_directory
-- @desc 脚本搜索路径
-- @return string
--
function path:create_directory(path)
end

--
-- @method path.create_directory_recrusively
-- @desc 脚本搜索路径
-- @return string
--
function path:create_directory_recrusively(path)
end

--
-- @method path.remove_directory
-- @desc 脚本搜索路径
-- @return string
--
function path:remove_directory(path)
end

--
-- @method path.remove_directory_recrusively
-- @desc 脚本搜索路径
-- @return string
--
function path:remove_directory_recrusively(path)
end

--
-- @method path.remove_file
-- @desc 脚本搜索路径
-- @return string
--
function path:remove_file(path)
end

--
-- @method path.remove_files
-- @desc 脚本搜索路径
-- @return string
--
function path:remove_files(...)
end

--
-- @method path.read_from_file
-- @desc 脚本搜索路径
-- @return string
--
function path:read_from_file(path)
end

--
-- @method path.write_to_file
-- @desc 脚本搜索路径
-- @return string
--
function path:write_to_file(path, content)
end

--
-- @method path.is_file_exists
-- @desc 脚本搜索路径
-- @return string
--
function path:is_file_exists(path)
end

--
-- @method path.is_directory_exists
-- @desc 脚本搜索路径
-- @return string
--
function path:is_directory_exists(path)
end

--
-- @method path.get_file_extension
-- @desc 脚本搜索路径
-- @return string
--
function path:file_extension(path)
end

--
-- @method path.rename_file
-- @desc 脚本搜索路径
-- @return string
--
function path:rename_file(path, old, new)
end

return path
